#include "Http.hpp"

//我们的http只要收到了登录的请求，就会传入到这里来
//我们只需要根据req设置resp就行了
void Login(HttpRequest &req,HttpResponse&resp)//提供一个请求和应答的Login服务 
{
    //受理我们的请求
    LOG(LogLevel::DEBUG)<<req.Args()<<"我们成功进入到了处理数据的逻辑"; //打印请求参数
    std::string text="hello"+req.Args(); //构造应答数据
    //添加对应的应答头
    resp.SetCode(200); //设置应答码为200
    resp.SetHeader("Content-Type","text/plain");
    resp.SetHeader("Content-Length",to_string(text.size()));//返回参数的大小
    resp.SetText(text);//给我们的_text赋值
}

void Register(HttpRequest &req,HttpResponse&resp)//提供一个请求和应答的Login服务 
{
    //受理我们的请求
    LOG(LogLevel::DEBUG)<<req.Args()<<"我们成功进入到了处理数据的逻辑"; //打印请求参数
    std::string text="hello"+req.Args(); //构造应答数据
    //添加对应的应答头
    resp.SetCode(200); //设置应答码为200
    resp.SetHeader("Content-Type","text/plain");
    resp.SetHeader("Content-Length",to_string(text.size()));//返回参数的大小
    resp.SetText(text);//给我们的_text赋值
}
void Vipcheck(HttpRequest &req,HttpResponse&resp)//提供一个请求和应答的Login服务 
{
    //受理我们的请求
    LOG(LogLevel::DEBUG)<<req.Args()<<"我们成功进入到了处理数据的逻辑"; //打印请求参数
    std::string text="hello"+req.Args(); //构造应答数据
    //添加对应的应答头
    resp.SetCode(200); //设置应答码为200
    resp.SetHeader("Content-Type","text/plain");
    resp.SetHeader("Content-Length",to_string(text.size()));//返回参数的大小
    resp.SetText(text);//给我们的_text赋值
}

//http port
int main(int argc, char *argv[])
{
    LogModule::logger.EnableConsoleLogStrategy();  
    if(argc != 2)
    {
        std::cout<<"Usage: "<<argv[0]<<" port"<<std::endl;
        exit(USAGE_ERROR);
    }
    uint16_t port = std::stoi(argv[1]);//将端口号转换为uint16_t类型

    std::unique_ptr<Http> httpsvr=std::make_unique<Http>(port);//创建http对象
    httpsvr->RegisterService("/login",Login);//注册Login服务
    httpsvr->RegisterService("/register",Register);//注册Register服务
    httpsvr->RegisterService("/vip_check",Vipcheck);//注册Vipcheck服务

    httpsvr->Start(); //启动http服务
    return 0;
}